package com.om.googleAnalytics.model;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

import java.io.Serializable;
import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Event implements Serializable {
    public Event() {
    }

    String event_date;
    String event_timestamp;
    String event_name;
    List<EventParams> event_params;
    String event_previous_timestamp;
    String event_value_in_usd;
    String event_bundle_sequence_id;
    String event_server_timestamp_offset;
    String user_id;
    String user_pseudo_id;
    //    List user_properties;  //todo 都是null
    String user_first_touch_timestamp;
    UserLtv user_ltv;
    Device device;
    Geo geo;
    //    String app_info; //todo 都是null
    TrafficSource traffic_source;
    String stream_id;
    String platform;
//    String event_dimensions; //todo 都是null
//    String ecommerce; //todo 都是null
//    List items; //todo 都是null

    String page_title;
    String page_location;
    String page_referrer;
    String link_url;

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class EventParams implements Serializable {
        public EventParams() {
        }

        String key;
        EventParamsValue value;

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public EventParamsValue getValue() {
            return value;
        }

        public void setValue(EventParamsValue value) {
            this.value = value;
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        public static class EventParamsValue implements Serializable {
            public EventParamsValue() {
            }

            String string_value;
            String int_value;
            String float_value;
            String double_value;

            public String getString_value() {
                return string_value;
            }

            public void setString_value(String string_value) {
                this.string_value = string_value;
            }

            public String getInt_value() {
                return int_value;
            }

            public void setInt_value(String int_value) {
                this.int_value = int_value;
            }

            public String getFloat_value() {
                return float_value;
            }

            public void setFloat_value(String float_value) {
                this.float_value = float_value;
            }

            public String getDouble_value() {
                return double_value;
            }

            public void setDouble_value(String double_value) {
                this.double_value = double_value;
            }
        }

    /*String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;
    String event_date;*/
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class UserLtv implements Serializable {
        public UserLtv() {
        }

        String revenue;
        String currency;

        public String getRevenue() {
            return revenue;
        }

        public void setRevenue(String revenue) {
            this.revenue = revenue;
        }

        public String getCurrency() {
            return currency;
        }

        public void setCurrency(String currency) {
            this.currency = currency;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Device implements Serializable {
        public Device() {
        }

        String category;
        String mobile_brand_name;
        String mobile_model_name;
        String mobile_marketing_name;
        String mobile_os_hardware_model;
        String operating_system;
        String operating_system_version;
        String vendor_id;
        String advertising_id;
        String language;
        String is_limited_ad_tracking;
        String time_zone_offset_seconds;
        String browser;
        String browser_version;
        WebInfo web_info;

        @JsonIgnoreProperties(ignoreUnknown = true)
        public static class WebInfo implements Serializable {
            public WebInfo() {
            }

            String browser;
            String browser_version;
            String hostname;

            public String getBrowser() {
                return browser;
            }

            public void setBrowser(String browser) {
                this.browser = browser;
            }

            public String getBrowser_version() {
                return browser_version;
            }

            public void setBrowser_version(String browser_version) {
                this.browser_version = browser_version;
            }

            public String getHostname() {
                return hostname;
            }

            public void setHostname(String hostname) {
                this.hostname = hostname;
            }
        }

        public String getCategory() {
            return category;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public String getMobile_brand_name() {
            return mobile_brand_name;
        }

        public void setMobile_brand_name(String mobile_brand_name) {
            this.mobile_brand_name = mobile_brand_name;
        }

        public String getMobile_model_name() {
            return mobile_model_name;
        }

        public void setMobile_model_name(String mobile_model_name) {
            this.mobile_model_name = mobile_model_name;
        }

        public String getMobile_marketing_name() {
            return mobile_marketing_name;
        }

        public void setMobile_marketing_name(String mobile_marketing_name) {
            this.mobile_marketing_name = mobile_marketing_name;
        }

        public String getMobile_os_hardware_model() {
            return mobile_os_hardware_model;
        }

        public void setMobile_os_hardware_model(String mobile_os_hardware_model) {
            this.mobile_os_hardware_model = mobile_os_hardware_model;
        }

        public String getOperating_system() {
            return operating_system;
        }

        public void setOperating_system(String operating_system) {
            this.operating_system = operating_system;
        }

        public String getOperating_system_version() {
            return operating_system_version;
        }

        public void setOperating_system_version(String operating_system_version) {
            this.operating_system_version = operating_system_version;
        }

        public String getVendor_id() {
            return vendor_id;
        }

        public void setVendor_id(String vendor_id) {
            this.vendor_id = vendor_id;
        }

        public String getAdvertising_id() {
            return advertising_id;
        }

        public void setAdvertising_id(String advertising_id) {
            this.advertising_id = advertising_id;
        }

        public String getLanguage() {
            return language;
        }

        public void setLanguage(String language) {
            this.language = language;
        }

        public String getIs_limited_ad_tracking() {
            return is_limited_ad_tracking;
        }

        public void setIs_limited_ad_tracking(String is_limited_ad_tracking) {
            this.is_limited_ad_tracking = is_limited_ad_tracking;
        }

        public String getTime_zone_offset_seconds() {
            return time_zone_offset_seconds;
        }

        public void setTime_zone_offset_seconds(String time_zone_offset_seconds) {
            this.time_zone_offset_seconds = time_zone_offset_seconds;
        }

        public String getBrowser() {
            return browser;
        }

        public void setBrowser(String browser) {
            this.browser = browser;
        }

        public String getBrowser_version() {
            return browser_version;
        }

        public void setBrowser_version(String browser_version) {
            this.browser_version = browser_version;
        }

        public WebInfo getWeb_info() {
            return web_info;
        }

        public void setWeb_info(WebInfo web_info) {
            this.web_info = web_info;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Geo implements Serializable {
        public Geo() {
        }

        String continent;
        String country;
        String region;
        String city;
        String sub_continent;
        String metro;

        public String getContinent() {
            return continent;
        }

        public void setContinent(String continent) {
            this.continent = continent;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public String getRegion() {
            return region;
        }

        public void setRegion(String region) {
            this.region = region;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getSub_continent() {
            return sub_continent;
        }

        public void setSub_continent(String sub_continent) {
            this.sub_continent = sub_continent;
        }

        public String getMetro() {
            return metro;
        }

        public void setMetro(String metro) {
            this.metro = metro;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class TrafficSource implements Serializable {
        public TrafficSource() {
        }

        String name;
        String medium;
        String source;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getMedium() {
            return medium;
        }

        public void setMedium(String medium) {
            this.medium = medium;
        }

        public String getSource() {
            return source;
        }

        public void setSource(String source) {
            this.source = source;
        }
    }

    public String getEvent_date() {
        return event_date;
    }

    public void setEvent_date(String event_date) {
        this.event_date = event_date;
    }

    public String getEvent_timestamp() {
        return event_timestamp;
    }

    public void setEvent_timestamp(String event_timestamp) {
        this.event_timestamp = event_timestamp;
    }

    public String getEvent_name() {
        return event_name;
    }

    public void setEvent_name(String event_name) {
        this.event_name = event_name;
    }

    public List<EventParams> getEvent_params() {
        return event_params;
    }

    public void setEvent_params(List<EventParams> event_params) {
        this.event_params = event_params;
    }

    public String getEvent_previous_timestamp() {
        return event_previous_timestamp;
    }

    public void setEvent_previous_timestamp(String event_previous_timestamp) {
        this.event_previous_timestamp = event_previous_timestamp;
    }

    public String getEvent_value_in_usd() {
        return event_value_in_usd;
    }

    public void setEvent_value_in_usd(String event_value_in_usd) {
        this.event_value_in_usd = event_value_in_usd;
    }

    public String getEvent_bundle_sequence_id() {
        return event_bundle_sequence_id;
    }

    public void setEvent_bundle_sequence_id(String event_bundle_sequence_id) {
        this.event_bundle_sequence_id = event_bundle_sequence_id;
    }

    public String getEvent_server_timestamp_offset() {
        return event_server_timestamp_offset;
    }

    public void setEvent_server_timestamp_offset(String event_server_timestamp_offset) {
        this.event_server_timestamp_offset = event_server_timestamp_offset;
    }

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getUser_pseudo_id() {
        return user_pseudo_id;
    }

    public void setUser_pseudo_id(String user_pseudo_id) {
        this.user_pseudo_id = user_pseudo_id;
    }

    public String getUser_first_touch_timestamp() {
        return user_first_touch_timestamp;
    }

    public void setUser_first_touch_timestamp(String user_first_touch_timestamp) {
        this.user_first_touch_timestamp = user_first_touch_timestamp;
    }

    public UserLtv getUser_ltv() {
        return user_ltv;
    }

    public void setUser_ltv(UserLtv user_ltv) {
        this.user_ltv = user_ltv;
    }

    public Device getDevice() {
        return device;
    }

    public void setDevice(Device device) {
        this.device = device;
    }

    public Geo getGeo() {
        return geo;
    }

    public void setGeo(Geo geo) {
        this.geo = geo;
    }

    public TrafficSource getTraffic_source() {
        return traffic_source;
    }

    public void setTraffic_source(TrafficSource traffic_source) {
        this.traffic_source = traffic_source;
    }

    public String getStream_id() {
        return stream_id;
    }

    public void setStream_id(String stream_id) {
        this.stream_id = stream_id;
    }

    public String getPlatform() {
        return platform;
    }

    public void setPlatform(String platform) {
        this.platform = platform;
    }

    public String getPage_title() {
        return page_title;
    }

    public void setPage_title(String page_title) {
        this.page_title = page_title;
    }

    public String getPage_location() {
        return page_location;
    }

    public void setPage_location(String page_location) {
        this.page_location = page_location;
    }

    public String getPage_referrer() {
        return page_referrer;
    }

    public void setPage_referrer(String page_referrer) {
        this.page_referrer = page_referrer;
    }

    public String getLink_url() {
        return link_url;
    }

    public void setLink_url(String link_url) {
        this.link_url = link_url;
    }
}
